home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Day Cry
/
Day Cry CD.bin
/
oh_towns
/
fb386smp
/
fs
/
fs.bas
< prev
next >
Wrap
BASIC Source File
|
1994-09-20
|
11KB
|
296 lines
1000 '================================================================
1010 ' âtâ@âCâïâZâîâNâ^
1020 '================================================================
1030 CLEAR ,,,,1024:LOADM "DOS.REX",0
1040 CLS
1050 GOSUB *F_Åëè·ë╗
1060 F_POSX=10:F_POSY=5:GOSUB *F_âtâ@âCâïâZâîâNâ^
1070 CLS
1080 PRINT "ĵô╛é╡é╜âhâëâCâuû╝:";F_FILEDRV$
1090 PRINT "ĵô╛é╡é╜âpâXû╝ :";F_FILEPATH$
1100 PRINT "ĵô╛é╡é╜âtâ@âCâïû╝:";F_FILENAME$
1110 END
1120 '----------------------------------------------------------------
1130 *F_Åëè·ë╗
1140 '----------------------------------------------------------------
1150 DEFLNG F
1160 SEACHICNSEL&=0:MEMCPY&=5 :GETFREESPACE&=10:ISFIXED&=15:ISEXIST&=20
1170 FINDFIRST&=25 :FINDNEXT&=30:GETDRV&=35 :GETDIR&=40
1180 '
1190 DIM F_DRV(26) ,F_NAME$(0) ,F_SIZE&(0) ,F_ATTR&(0),F_DATE$(0)
1200 DIM F_BTNX1(18),F_BTNY1(18),F_BTNX2(18),F_BTNY2(18)
1210 DIM F_ICN(9),F_PAT(((24*24/8)+3)/4+1)
1220 '
1230 F_NUM=0:F_WLD$="":F_STR$=SPACE$(100)
1240 F_ICN_SEC=CALLM(SEACHICNSEL&)
1250 '
1260 RESTORE *F_â{â^âôê╩Æuâfü[â^
1270 FOR F_I=0 TO 9
1280 READ F_BTNX1(F_I),F_BTNY1(F_I),F_BTNX2(F_I),F_BTNY2(F_I)
1290 NEXT
1300 FOR F_I=10 TO 17
1310 F_BTNX1(F_I)=F_BTNX1(9):F_BTNX2(F_I)=F_BTNX2(9)
1320 F_BTNY1(F_I)=F_BTNY1(F_I-1)+1:F_BTNY2(F_I)=F_BTNY2(F_I-1)+1
1330 NEXT
1340 '
1350 RESTORE *F_âAâCâRâôâfü[â^:FOR F_I=0 TO 9:READ F_ICN(F_I):NEXT
1360 RETURN
1370 '
1380 *F_â{â^âôê╩Æuâfü[â^
1390 DATA 0, 1, 2, 1, 3, 1, 5, 1, 6, 1, 8, 1, 33, 1,46, 1
1400 DATA 48, 9,49, 9, 48,10,49,10, 36,11,41,11, 44,11,49,11
1410 DATA 11,11,24,11, 10, 2,46, 2
1420 *F_âAâCâRâôâfü[â^
1430 DATA 70,0,72,77,0,77,76,78,69,79
1440 '
1450 '----------------------------------------------------------------
1460 *F_âtâ@âCâïâZâîâNâ^
1470 '----------------------------------------------------------------
1480 F_FILENAME$="":F_FILEPATH$="":F_FILEDRV$="":F_TOP=0
1490 GOSUB *F_ëµû╩ò\Ī
1500 GOSUB *F_âhâëâCâuÅεò±Äµô╛:GOSUB *F_âhâëâCâuÅ≤ï╡ò\Ī
1510 GOSUB *F_âtâ@âCâïÅεò±Äµô╛:GOSUB *F_âtâ@âCâïû╝ò\Ī
1520 MOUSE 0:MOUSE 1,0,0,1
1530 *F_LOOP
1540 GOSUB *F_â}âEâXâ{â^âôâ`âFâbâN
1550 ON F_BTN+1 GOTO 1660,1730,1780,1840,1880,1910,1940,2000,2020
1560 '---âèâXâg
1570 F_I=F_TOP+F_BTN-8:IF F_I>F_NUM GOTO *F_LOOP
1580 IF F_ATTR&(F_I) = &H10 THEN
1590 F_CMD$="cd "+F_NAME$(F_I):SHELL F_CMD$:GOTO 1730
1600 ELSE
1610 F_FILENAME$=LEFT$(F_NAME$(F_I)+SPACE$(14),12)
1620 LOCATE F_POSX+11,F_POSY+11:PRINT "["+F_FILENAME$+"]"
1630 ENDIF
1640 GOTO *F_LOOP
1650 '---<
1660 IF F_DRV(0)-1<>0 THEN F_DRV(0)=F_DRV(0)-1 ELSE F_DRV(0)=26
1670 IF F_DRV(F_DRV(0))<0 THEN 1660
1680 LOCATE F_POSX+4,F_POSY+1:PRINT AKCNV$(CHR$((F_DRV(0)+&H40)));
1690 F_BTN_ATR=MOUSE(3,0):F_BTN_ATR=0:F_I=0
1700 WHILE F_BTN_ATR=0 AND F_I<130:F_I=F_I+1:F_BTN_ATR=MOUSE(3,0):WAIT 1:WEND
1710 IF F_BTN_ATR=0 THEN 1730 ELSE *F_LOOP
1720 '---A
1730 F_CMD$=CHR$(&H40+F_DRV(0))+":":SHELL F_CMD$
1740 GOSUB *F_âhâëâCâuÅ≤ï╡ò\Ī
1750 F_TOP=0:GOSUB *F_âtâ@âCâïÅεò±Äµô╛:GOSUB *F_âtâ@âCâïû╝ò\Ī
1760 GOTO *F_LOOP
1770 '--->
1780 IF F_DRV(0)+1<>27 THEN F_DRV(0)=F_DRV(0)+1 ELSE F_DRV(0)=1
1790 IF F_DRV(F_DRV(0))<0 THEN 1780
1800 LOCATE F_POSX+4,F_POSY+1:PRINT AKCNV$(CHR$((F_DRV(0)+&H40)));
1810 F_BTN_ATR=MOUSE(3,0):F_BTN_ATR=0:F_I=0
1820 WHILE F_BTN_ATR=0 AND F_I<130:F_I=F_I+1:F_BTN_ATR=MOUSE(3,0):WAIT 1:WEND
1830 IF F_BTN_ATR=0 THEN 1730 ELSE *F_LOOP
1840 '---Ée
1850 SHELL "cd .."
1860 GOTO 1730
1870 '---ü¬
1880 IF F_TOP<>0 THEN F_TOP=F_TOP-1:GOSUB *F_âtâ@âCâïû╝ò\Ī
1890 GOTO *F_LOOP
1900 '---ü½
1910 IF F_TOP<F_NUM-10 THEN F_TOP=F_TOP+1:GOSUB *F_âtâ@âCâïû╝ò\Ī
1920 GOTO *F_LOOP
1930 '---Ä└ìs
1940 IF F_FILENAME$="" THEN *F_LOOP
1950 CALLM GETDIR&,0,VARPTR(F_STR$)
1960 F_FILEPATH$="\"+LEFT$(F_STR$,INSTR(F_STR$,CHR$(0)))
1970 F_FILEDRV$=CHR$(&H40+F_DRV(0))
1980 GOTO *F_BYE
1990 '---ĵÅ┴
2000 F_FILENAME$="":F_FILEPATH$="":GOTO *F_BYE
2010 '---ò╢ÄÜ
2020 LOCATE F_POSX+12,F_POSY+11:PRINT SPACE$(12)
2030 LOCATE F_POSX+12,F_POSY+11:LINE INPUT"",F_FILENAME$
2040 F_FILENAME$=LEFT$(F_FILENAME$+SPACE$(12),12)
2050 LOCATE F_POSX+11,F_POSY+11:PRINT "["+F_FILENAME$+"]"
2060 GOTO *F_LOOP
2070 *F_BYE
2080 RETURN
2090 '----------------------------------------------------------------
2100 *F_â}âEâXâ{â^âôâ`âFâbâN
2110 '----------------------------------------------------------------
2120 F_BTN=-1:F_BTN_ATR=0
2130 WHILE F_BTN=-1
2140 WHILE MOUSE(2,0)=0:WEND:F_X=MOUSE(0):F_Y=MOUSE(1)
2150 F_I=0
2160 WHILE F_I<=17 AND F_BTN=-1
2170 F_X1=(F_POSX+F_BTNX1(F_I))*8:F_X2=(F_POSX+F_BTNX2(F_I))*8+7
2180 F_Y1=(F_POSY+F_BTNY1(F_I))*19:F_Y2=(F_POSY+F_BTNY2(F_I))*19+18
2190 IF F_X1<=F_X AND F_X2>=F_X AND F_Y1<=F_Y AND F_Y2>=F_Y THEN
2200 LINE(F_X1,F_Y1)-(F_X2,F_Y2),XOR,7,BF
2210 IF F_I<>4 AND F_I<>5 THEN WHILE MOUSE(2,0) OR MOUSE(2,1):WEND
2220 LINE(F_X1,F_Y1)-(F_X2,F_Y2),XOR,7,BF
2230 F_BTN=F_I
2240 ENDIF
2250 F_I=F_I+1
2260 WEND
2270 WEND
2280 IF F_BTN<>4 AND F_BTN<>5 THEN F_BTN_ATR=MOUSE(3,0):WAIT 20:F_BTN_ATR=MOUSE(3,0)
2290 RETURN
2300 '-----------------------------
2310 *F_ëµû╩ò\Ī
2320 '-----------------------------
2330 LINE((F_POSX)*8,(F_POSY)*19)-((F_POSX+52)*8,(F_POSY+13)*19),PSET,%8,BF
2340 LINE((F_POSX+10)*8,(F_POSY+2)*19)-((F_POSX+48)*8,(F_POSY+11)*19),PSET,%7,B
2350 LOCATE F_POSX+48,F_POSY+ 9:PRINT "ü¬"
2360 LOCATE F_POSX+48,F_POSY+10:PRINT "ü½"
2370 LOCATE F_POSX+33,F_POSY+ 1:PRINT "ÉeâfâBâîâNâgâè"
2380 LOCATE F_POSX+11,F_POSY+11:PRINT "[ ]"
2390 LOCATE F_POSX+36,F_POSY+11:PRINT "[Ä└ìs] [ĵÅ┴]"
2400 RETURN
2410 '-----------------------------
2420 *F_âhâëâCâuÅ≤ï╡ò\Ī
2430 '-----------------------------
2440 LOCATE F_POSX+1,F_POSY+1:PRINT "üâ ";AKCNV$(CHR$((F_DRV(0)+&H40)));" üä"
2450 F_FREE=CALLM(GETFREESPACE&,0)
2460 LOCATE F_POSX,F_POSY+3
2470 IF F_FREE<0 THEN PRINT "ü@ö±ÅÇö⌡"
2480 IF F_FREE>=0 AND F_FREE<1024 THEN PRINT USING "###### B";F_FREE
2490 IF F_FREE>1024 AND F_FREE<1024*1024 THEN PRINT USING "####.#KB";F_FREE/1024
2500 IF F_FREE>1024*1024 THEN PRINT USING "####.#MB";F_FREE/1024/1024
2510 FOR F_I=1 TO 9:LOCATE F_POSX+10,F_POSY+F_I+1:PRINT SPACE$(37);:NEXT
2520 '
2530 CALLM GETDIR&,0,VARPTR(F_STR$)
2540 F_I=INSTR(F_STR$,CHR$(0)):F_J=F_I
2550 WHILE F_I>1 AND MID$(F_STR$,F_I,1)<>"\":F_I=F_I-1:WEND
2560 LOCATE F_POSX+11,F_POSY+1
2570 PRINT "["+LEFT$(MID$(F_STR$,F_I,F_J-F_I)+SPACE$(13),12)+"]"
2580 '
2590 LINE((F_POSX+3)*8,(F_POSY+4)*19)-((F_POSX+3)*8+23,(F_POSY+4)*19+23),PSET,%8,BF
2600 IF F_FREE>=0 THEN
2610 CALLM MEMCPY&,&H14,VARPTR(F_PAT(0)),F_ICN_SEC,16+F_ICN(F_DRV(F_DRV(0)))*24*24/4,24*24/8
2620 PUT@((F_POSX+3)*8,(F_POSY+4)*19)-((F_POSX+3)*8+23,(F_POSY+4)*19+23),F_PAT,,7
2630 ENDIF
2640 RETURN
2650 '-----------------------------
2660 *F_âtâ@âCâïû╝ò\Ī
2670 '-----------------------------
2680 F_I=1
2690 WHILE F_I<=9 AND F_I+F_TOP<F_NUM
2700 LOCATE F_POSX+10,F_POSY+F_I+1
2710 IF F_ATTR&(F_I+F_TOP)=&H10 THEN
2720 PRINT "<";LEFT$(F_NAME$(F_I+F_TOP)+SPACE$(20),12);">";
2730 PRINT SPACE$(8)+F_DATE$(F_I+F_TOP)
2740 ELSE
2750 PRINT " ";LEFT$(F_NAME$(F_I+F_TOP)+SPACE$(14),12);
2760 PRINT " ";RIGHT$(SPACE$(14)+STR$(F_SIZE&(F_I+F_TOP)),8);
2770 PRINT F_DATE$(F_I+F_TOP)
2780 ENDIF
2790 F_I=F_I+1
2800 WEND
2810 RETURN
2820 '-----------------------------
2830 *F_âhâëâCâuÅεò±Äµô╛
2840 '-----------------------------
2850 FOR F_I=1 TO 26:F_DRV(F_I)=CALLM(ISEXIST&,F_I):NEXT
2860 FOR F_I=1 TO 16
2870 F_DRV(F_I)=CALLM(ISEXIST&,F_I)
2880 IF F_DRV(F_I)>=0 THEN
2890 F_DRV(F_I)=INP(&H31D8+F_I*4,1):F_J=CALLM(ISFIXED&,F_I)
2900 IF F_DRV(F_I)=2 AND F_J=0 THEN F_DRV(F_I)=6
2910 IF F_DRV(F_I)=255 AND F_J=0 THEN F_DRV(F_I)=7
2920 IF F_DRV(F_I)=255 THEN F_DRV(F_I)=2
2930 ENDIF
2940 NEXT
2950 F_DRV(17)=8
2960 FOR F_I=18 TO 26
2970 IF F_DRV(F_I)>=0 THEN F_DRV(F_I)=9
2980 NEXT
2990 F_DRV(0)=CALLM(GETDRV&,VARPTR(F_STR$))
3000 RETURN
3010 '-----------------------------
3020 *F_âtâ@âCâïÅεò±Äµô╛
3030 '-----------------------------
3040 F_NUM=0:F_WLD$="*.*"+CHR$(0)
3050 F_I=CALLM(FINDFIRST&,VAR